/*
 * @Author: your name
 * @Date: 2022-03-03 15:20:58
 * @LastEditTime: 2022-03-03 15:26:55
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \day05\15-作用域链.js
 */
/*什么是自由变量
首先认识一下什么叫做自由变量。
如下代码中，console.log(a)要得到a变量，
但是在当前的作用域中没有定义a（可对比一下b）。
当前作用域没有定义的变量，这成为 自由变量 。
自由变量的值如何得到 —— 要到创建这个函数的那个父级作用域寻找，
如果没有就一直向上级祖先元素寻找（这就是所谓的"静态作用域"）*/
var a = 100
    function fn() {
        var b = 200
        console.log(a) // 这里的a在这里就是一个自由变量  // 100
        console.log(b,'-==========-')
    }
    fn()
    /*什么是作用域链?
    如果父级也没呢？再一层一层向上寻找，直到找到全局作用域还是没找到，就宣布放弃。
    这种一层一层的关系，就是作用域链 。*/
    var a = 100
    function F1() {
    var b = 200
    function F2() {
        var c = 300
        console.log(a) // 自由变量，顺作用域链向父作用域找 //100
        console.log(b) // 自由变量，顺作用域链向父作用域找 //200
        console.log(c) // 本作用域的变量  //300
             }
    F2()
    }
F1()